package API.PackDome;

/**
 * ClassName:IntegerText001
 * Package:API.PackDome
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/2-20:46
 * @Version:v1.0
 */
public class IntegerText001 {
    public static void main(String[] args) {
        //利用构造方法获取Integer的对象(JDK5以前)
        Integer i1 = new Integer(100);
        Integer i2 = new Integer(10);
        System.out.println(i1);
        System.out.println(i2);
        //利用静态方法获取Integer的对象
        Integer i3 = Integer.valueOf(100);
        Integer i4 = Integer.valueOf("100");
        Integer i5 = Integer.valueOf("100", 8);
        System.out.println(i3);
        System.out.println(i4);
        System.out.println(i5);

        //这两种方式获取对象的区别
        //底层原理
        //在实际开发中：-128~127之间的数据,用的比较多
        //如果每次使用都是new对象,那么太浪费内存
        //所以,提前把这个范围之内的每一个数据都创建好对象
        //如果要用到了不会创建新的,而是返回已经创建好的对象
        Integer i6 = Integer.valueOf(127);
        Integer i7 = Integer.valueOf(127);
        System.out.println(i6 == i7);//true

        Integer i8 = Integer.valueOf(128);
        Integer i9 = Integer.valueOf(128);
        System.out.println(i8 == i9);//false


        //因为看到了new关键字,java中,每一次new都是创建了一个新的对象那个
        //所以下面的两个对象
        Integer i10 = new Integer(127);
        Integer i11 = new Integer(127);
        System.out.println(i10 == i11);//false

        Integer i12 = new Integer(128);
        Integer i13 = new Integer(128);
        System.out.println(i12 == i13);//false

    }
}
